#pragma once
#include "VectorOperations.h"
#include "Matrix33.h"
#include "Objects.h"
#include <string>

class Tower: public Objects
{
public:
    /* 
	Tower();
	Tower(Vector3f &pos);
    */
	Tower(Tower *baseTower, Vector3f &pos);

	Tower(std::string fileName);

	// Vector3f position; Already included in Objects.h

	//These are just multipliers.
	int fireRateUpgradeState;
	int dmgUpgradeState;
	int attackRadiusUpgradeState;
	
	int heightLevels;
	
	int fireRate;
	int damage;
	float attackRadius;
	
	int numLevels;
    int type; // No Type = 0
};

// Tower Types

// Type 1
class LightningTower : public Tower
{
public:
	LightningTower(Tower *baseTower, Vector3f &pos);
};
// Type 2
class EarthTower : public Tower
{
public:
	EarthTower(Tower *baseTower, Vector3f &pos);
};
// Type 3
class WindTower : public Tower
{
public:
	WindTower(Tower *baseTower, Vector3f &pos);
};
// Type 4
class FireTower : public Tower
{
public:
	FireTower(Tower *baseTower, Vector3f &pos);
};